﻿Imports FileCopyExtensions
Imports System.IO

''' <summary>
''' Classe montrant un exemple d'utilisation de la librairie
''' </summary>
''' <remarks></remarks>
Public Class Exemple
    ' DEFINITION DES VARIABLES
    Dim CopyProgress As CopyFileCallback    ' Evenement pour la progression
    Dim CopyEnd As CopyFileTerminate        ' Evenement pour la fin de la copie

    ''' <summary>
    ''' Constructeur par défaut
    ''' </summary>
    ''' <remarks></remarks>
    Sub Exemple()
        Dim fichierSource As FileInfo = New FileInfo("Le\Chemin\vers\mon\fichier\MonFichier.irc")
        Dim DossierDest As FileInfo = New FileInfo("Le\Dossier\De\Destination")

        CopyProgress = New CopyFileCallback(AddressOf Exemple_CopyProgress)
        CopyEnd = New CopyFileTerminate(AddressOf Exemple_CopyEnd)

        ' Lancement de la fonction de copie dans un BackgroundWorker
        FileCopyExtensions.FileCopyExtensions.CopyFile(fichierSource, DossierDest, CopyFileOptions.All, CopyProgress, CopyEnd)
    End Sub

    ''' <summary>
    ''' Fonction qui sera executée lorsque la copie sera terminé
    ''' </summary>
    ''' <param name="succes">Booléen qui vaut vrai si la copie s'est terminé avec succès, faux sinon</param>
    ''' <remarks></remarks>
    Private Sub Exemple_CopyEnd(succes As Boolean)
        'Code que j'effectue à la fin de la copie (message, etc.)
        '...

    End Sub

    ''' <summary>
    ''' Fonction qui sera appelée à chaque evenements de la progression
    ''' </summary>
    ''' <param name="source">Fichier source</param>
    ''' <param name="destination">Dossier de destination</param>
    ''' <param name="state"></param>
    ''' <param name="totalFileSize">Nombre de bytes total du fichier</param>
    ''' <param name="totalBytesTransferred">Nombre de bytes transféré</param>
    '''<returns>Action a faire pendant la copie (on continue, on s'arrete, etc.)</returns>
    ''' <remarks></remarks>
    Private Function Exemple_CopyProgress(source As FileInfo, destination As FileInfo, state As Object, totalFileSize As Long, totalBytesTransferred As Long) As CopyFileCallbackAction
        ' Code que je veux effectuer (mise à jour d'une barre de progression, etc.)
        ' ...

        ' Suivant la valeur de retour, on continue ou pas la copie
        Return CopyFileCallbackAction.Continue
    End Function

End Class
